CC = g++
CFLAGS = -g -Wall -Werror
LDFLAGS = -pthread

BINARIES = backend estres

all: $(BINARIES)

estres: Estres.cpp Estres.h RWLock.o RWLock.h Lightswitch.o Lightswitch.h Semaphore.o Semaphore.h Cond.o Cond.h Mutex.o Mutex.h
	$(CC) $(LDFLAGS) $(CFLAGS) Estres.cpp RWLock.o Lightswitch.o Semaphore.o Cond.o Mutex.o -o estres

backend: Backend_multi.cpp Backend_multi.h Enviar_recibir.o Enviar_recibir.h Encabezado.h Casillero.h RWLock.o RWLock.h Lightswitch.o Lightswitch.h Semaphore.o Semaphore.h Cond.o Cond.h Mutex.o Mutex.h
	$(CC) $(LDFLAGS) $(CFLAGS) Backend_multi.cpp Enviar_recibir.o RWLock.o Lightswitch.o Semaphore.o Cond.o Mutex.o -o backend
	
Enviar_recibir.o: Enviar_recibir.cpp Enviar_recibir.h Encabezado.h
	$(CC) $(CFLAGS) -c Enviar_recibir.cpp
	
RWLock.o: RWLock.cpp RWLock.h Lightswitch.o Lightswitch.h Semaphore.o Semaphore.h Mutex.o Mutex.h
	$(CC) $(CFLAGS) -c RWLock.cpp

Lightswitch.o: Lightswitch.cpp Lightswitch.h Semaphore.o Semaphore.h Mutex.o Mutex.h
	$(CC) $(CFLAGS) -c Lightswitch.cpp

Semaphore.o: Semaphore.cpp Semaphore.h Cond.o Cond.h Mutex.o Mutex.h
	$(CC) $(CFLAGS) -c Semaphore.cpp
	
Cond.o: Cond.cpp Cond.h Mutex.o Mutex.h
	$(CC) $(CFLAGS) -c Cond.cpp

Mutex.o: Mutex.cpp Mutex.h
	$(CC) $(CFLAGS) -c Mutex.cpp
		
clean:
	rm -f *.o
	rm -f $(BINARIES)
